#pragma once
#include <boost/noncopyable.hpp>
#include "ImportExport.hpp"

namespace he
{
	//! Tile walker implementation.
	class TileWalker : boost::noncopyable
	{
		// Enums
	public:
		//! Direction.
		enum Direction
		{
			NORTH,
			NORTH_EAST,
			EAST,
			SOUTH_EAST,
			SOUTH,
			SOUTH_WEST,
			WEST,
			NORTH_WEST,
		};

		// Operations
	public:
		//! Get the tile position in selected direction.
		static HE_ENGINE_API std::pair<int, int> get_tile(int X, int Y, Direction Dir);
		//! Get the tile position in selected direction and selected size.
		static HE_ENGINE_API std::pair<int, int> get_tile(int X, int Y, Direction Dir, unsigned char Step);

		// Construction/Destruction
	private:
		TileWalker();
	};
}